#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
#include "config.h"
#include <string.h>
#define _GNU_SOURCE

FILE * ptr;

void abrirArchivoDisco()
{
	ptr = fopen(pathDisco, "r+");
	if(ptr!=NULL) {

		posix_fadvise((int)ptr, 0,0,POSIX_FADV_RANDOM); /*revisar si es random*/
	}
		else {
		printf("error al abrir archivoDisco\n");
	}
}

int leerArchivoDisco(int sect,char* buffLectura)
{
	size_t result;
	char sectorLeer[512];
	memset(sectorLeer,0,512);
	if(sect<pista*sector){
		fseek(ptr,sect*512,SEEK_SET);
		result = fread_unlocked(sectorLeer, 1, 512,ptr);
		if(result == (size_t) 512) {
			memcpy(buffLectura,sectorLeer,512);
			return 0;
		}
		else return 1;
	}
	printf("Sector pedido inválido para el tamaño del disco.\n");

	return 1;


}

int escribirArchivoDisco(int sect,char* buffEscritura)
{
	size_t result;

if(sect==0){
	if(sect<pista*sector){
				fseek(ptr,sect*512,SEEK_SET);
				result = fwrite_unlocked(buffEscritura,1,512,ptr); /*escribe el buffer*/
				if(result == (size_t) 512){
					//fclose(ptr);
					//abrirArchivoDisco();
					fflush_unlocked(ptr);
					return 0;}
				else return 1;
			}


}
		if(sect<pista*sector){
			fseek(ptr,sect*512,SEEK_SET);
			result = fwrite_unlocked(buffEscritura,1,512,ptr); /*escribe el buffer*/
			if(result == (size_t) 512){

				fflush_unlocked(ptr);
				return 0;}
			else return 1;
		}
		printf("Sector pedido inválido para el tamaño del disco.\n");

		return 1;
}
